package com.example.myapplication;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.accessibilityservice.FingerprintGestureController;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    TextView txtTitle = null;
    Button btnRead = null;
    Button btnLike = null;
    Button btnRegister = null;
    Button btnTxtSize = null;
    Button btnHobby = null;
    Button btnQuit = null;

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtTitle = findViewById(R.id.txtTitle);

        btnRead = findViewById(R.id.btnRead);
        btnLike = findViewById(R.id.btnLike);
        btnRegister = findViewById(R.id.btnRegister);
        btnTxtSize = findViewById(R.id.btnTxtSize);
        btnHobby = findViewById(R.id.btnHobby);
        btnQuit = findViewById(R.id.btnQuit);

//        View.OnClickListener 类.类，说明OnClickListener是内部类
//        new View.OnClickListener(){...} 是匿名内部类
        btnLike.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                btnLike.setText("已点赞");
            }
        });

//        跳转
        btnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, MyActivity.class);
                startActivity(intent);
            }

        });



//        退出
        btnQuit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                退出的对话框
                /*
                * 一、普通对话框，例如退出应用对话框
                * 1. 创建对话框的builder对象，用于构建一个对话框的模板
                * 2. 对builder的setxxx方法进行链式调用实现对话框的基本结构
                * 3. builder对象调用create()方法创建一个对话框对象，
                * 4. 用该对象调用show()方法
                *
                * 二、单选对话框，例如设置字体对话框
                *
                * 三、多选对话框，例如设置兴趣爱好
                *
                * */

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.mipmap.ic_launcher)
                        .setTitle("退出")
                        .setMessage("确定退出APP？")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
//                                对话框退出
                                dialogInterface.dismiss();
//                                当前页面退出
                                MainActivity.this.finish();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                dialogInterface.dismiss();
                            }
                        });
//                利用builder的create()方法将创建的对话框模型赋值给对话框对象ad
                AlertDialog ad = builder.create();
//                show()方法展示
                ad.show();

            }
        });

        //        设置字体
        btnTxtSize.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                String[] showMsg = new String[]{"小号", "默认", "中号", "大号"};
                final int[] checked = {1};
                int[] txtSize = new int[]{20, 30, 40, 50};

                builder.setIcon(R.mipmap.ic_launcher)
                        .setTitle("设置字体大小")
//                        字符串数组，默认选择第几项，radiobutton点击事件
                        .setSingleChoiceItems(showMsg, 1, new DialogInterface.OnClickListener() {
                            @Override
//                            dialogInterface是对话框对象，i接收选择radiobutton的序号
                            public void onClick(DialogInterface dialogInterface, int i) {
                                checked[0] = i;
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
//                                设置字号
                                txtTitle.setTextSize(txtSize[checked[0]]);
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                dialogInterface.dismiss();
                            }
                        });
//                利用builder的create()方法将创建的对话框模型赋值给对话框对象ad
                AlertDialog ad = builder.create();
//                show()方法展示
                ad.show();
            }
        });

//        选择爱好
        btnHobby.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                String[] showMsg = new String[]{"电影", "旅游", "阅读", "工作"};
                boolean[] isCheck = new boolean[]{true, false, false, false};

                builder.setIcon(R.mipmap.ic_launcher)
                        .setTitle("请选择爱好")
//                        显示内容，选中与否，监听器
                        .setMultiChoiceItems(showMsg, isCheck, new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
//                            i接收被选中选项的索引，b接收选项的选中状态，选中返回true
                            public void onClick(DialogInterface dialogInterface, int i, boolean b) {
//                                更新isCheck列表
                                isCheck[i] = b;
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                StringBuffer sb = new StringBuffer();
                                for (int j = 0; j < isCheck.length; ++j){
                                    if (isCheck[j] == true){
                                        sb.append(showMsg[j]).append(" | ");
                                    }
                                }
                                if (sb.length()>0){
                                    sb.deleteCharAt(sb.length()-2);
                                }
                                Toast.makeText(MainActivity.this, sb, Toast.LENGTH_SHORT).show();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                dialogInterface.dismiss();
                            }
                        });
//                利用builder的create()方法将创建的对话框模型赋值给对话框对象ad
                AlertDialog ad = builder.create();
//                show()方法展示
                ad.show();
            }
        });

    }


    /*
    * 按钮触发事件的实现方式有三种：
    *
    * 一、通过按钮的onClick属性指定点击事件触发的方法名，方法在activity中进行定义
    *
    * 二、通过匿名内部类的方式实现
    * btnLike.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ...
            }
        });
    *
    * 三、接口方式，略
    *
    *
    * */

//    一、通过onClick属性指定事件触发的方法名进而定义button的click事件
    public void clickRead(View view){
        btnRead.setText("已阅读");  // 更改button的文本信息
    }

}